import { IDictItemVO } from '@/api/admin/dict';
import { defineStore } from 'pinia';

interface IDict {
	key: string;
	value: IDictItemVO[];
}

export const useDictStore = defineStore('dict', () => {
	const dict = ref<IDict[]>([]);

	/**
	 * 获取指定键的值
	 * @function
	 * @param key - 需要获取的键
	 * @returns - 返回指定键对应的值，如果找不到则返回 null
	 */
	function getDict(key: string) {
		const item = dict.value.find((item) => item.key === key);
		return item ? item.value : null;
	}

	/**
	 * 设置一个键值对
	 * @function
	 * @param key - 需要设置的键
	 * @param value - 需要设置的值
	 */
	function setDict(key: string, value: IDictItemVO[]) {
		if (!key || typeof key !== 'string') {
			return;
		}
		dict.value.push({ key, value });
	}

	/**
	 * 删除指定键值对
	 * @function
	 * @param key - 需要删除的键
	 * @returns - 返回删除操作是否成功
	 */
	function removeDict(key: string) {
		const index = dict.value.findIndex((item) => item.key === key);
		if (index !== -1) {
			dict.value.splice(index, 1);
			return true;
		}
		return false;
	}

	return { dict, getDict, setDict, removeDict };
});
